# 因为工作太忙，作业延后，先向老师致歉，老师在百忙之中批改我的作业，我表示感谢
# 按照老师上课讲的视频内容，我在WIN10的64位系统下安装了Anaconda3、python3.7、OpenCV4.3、Cmake3.17、PyCharm2020以及visual studio2019
# 在jupyter Notebook中报错，我就用了PyCharm给老师交的作业。能请老师帮我看看报错的问题吗？
# 1. 在计算机上安装OpenCV 3.0以上版本，为后续作业准备。开发语言可采用C++或Python。
# 已经可以在PyCharm中实现了。


# 2. 创建第一个视觉程序“Hello，world！”，显示Lena图片。具体效果参看课程PPT。
# 答：以下是第一周进阶作业的第2题的答题内容：
# 首先导入Open CV 的环境
import cv2 as cv

# 把图片文件存储给变量filename,读取图片给变量img,用imShow()来显示图像。
filename = "D:\\lena.jpg"
img = cv.imread(filename)
cv.imshow("Hello World!", img)
cv.waitKey()




# 3. 对Lena图像，分解得到RGB分量及HSV分量，显示各分量，并对结果进行比较说明。
# 以下是第一周进阶作业的第3题的答题内容：

'''
    导入D盘根目录下的lena.jpg图片
    存储在变量filename中
    用cv.imRead() 读取图片
    再通过cv.cvtColor() 把原图片转化为灰度图片
'''
filename = "D:\\lena.jpg"
img = cv.imread(filename)
gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)

# 用cv.imShow() 显示原始图片和灰度图片
cv.imshow("sourse image", img)
cv.imshow("gray", gray)
cv.waitKey()

# 用cv.cvtColor() 把彩色图片BGR颜色空间转换成HSV颜色空间
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)

# 用cv.imShow() 分别显示图像的色度、饱和度和亮度三个分量
cv.imshow("HUE", hsv[:, :, 0])
cv.imshow("SATURATION", hsv[:, :, 1])
cv.imshow("VALUE", hsv[:, :, 2])
cv.waitKey()

# 用cv.imShow() 分别显示图像的蓝绿红三个分量
cv.imshow("BLUE", img[:, :, 0])
cv.imshow("GREEN", img[:, :, 1])
cv.imshow("RED", img[:, :, 2])

cv.waitKey()
cv.destroyAllWindows()
'''
    听了老师的课程受益匪浅，又查了CSDN 中的相关帖子，对两种颜色空间确实有一定的理解，简要回答如下：
    对于BGR,我们生活中习惯说成RGB,我们可以这样理解，生活中的颜色都可以由R、G、B 组成
    例如：R取83，G取134，B取139 。这个组合就可以构成一个#53868B的颜色
    既然颜色是由三维数字组成，R、G、B就会有它们的取值范围。分别可以取0~255 。
    R、G、B颜色空间可以用一个正方体模型来表示。最暗的地方是坐标原点，坐标值为（0，0，0）。最亮的地方坐标是（255，255，255）。
    对于HSV,如果把RGB颜色空间用一个正方体来表示，那么HSV颜色空间可以用一个倒置的圆锥体模型来表示。
    也是由3个属性来决定颜色，H、S、V 分别是色调、饱和度、明度。三者也同样是有取值范围的。
    色调H用角度来度量。取值范围为0度到360度。从红色开始按逆时针方向计算，0度为红色，120度为绿色，240度为蓝色。
    它们的补色是：60度为黄色，180度为青色，300度为品红。
    饱和度S表示颜色接近光谱色的程度，取值范围为0%~100%。值越大，颜色越饱和。
    明度V表示颜色的明亮程度。通常取值范围为0%（黑）~100%（白）。
    当然，知道BGR三个分量值，可以通过公式算出HSV三个分量值。同理，知道HSV三个分量值同样可以算出BGR三个分量值。
'''



